package com.remote.common.command.handler;

import com.remote.common.command.Commands;
import com.remote.common.context.RemoteContext;
import com.remote.common.model.ClientInfo;
import com.remote.common.model.Request;
import io.netty.channel.ChannelHandlerContext;

/**
 * 客户端命令处理上下文
 */
public interface CommandContext extends RemoteContext {
    /**
     * 设置通道处理上下文
     *
     * @param context
     */
    void setContext(ChannelHandlerContext context);

    /**
     * 设置当前客户端信息
     *
     * @param clientInfo
     */
    void setClient(ClientInfo clientInfo);

    /**
     * 发送命令
     *
     * @param clientId
     * @param control
     * @param o
     */
    void fireCommand(String clientId, Commands control, Object o);

    /**
     * 发送命令
     *
     * @param request
     */
    void fireCommand(Request request);

    /**
     * 获取当前客户端
     *
     * @return
     */
    ClientInfo getClient();


}
